// ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
//==========================================================================
//  File:       TcpChannelHelper.cs 
// 
//  Summary:    Implements helper methods for tcp client and server channels.
// 
//=========================================================================

using System;
using System.Text; 
using System.Runtime.Remoting.Channels;
 
namespace System.Runtime.Remoting.Channels.Tcp 
{
 
    internal static class TcpChannelHelper
    {
        private const String _tcp = "tcp://";
 
        // Used by tcp channels to implement IChannel::Parse.
        // It returns the channel uri and places object uri into out parameter. 
        internal static String ParseURL(String url, out String objectURI) 
        {
            // Set the out parameters 
            objectURI = null;

            int separator;
 
            // Find the starting point of tcp://
            // NOTE: We are using this version of String.Compare to ensure 
            // that string operations are case-insensitive!! 
            if (StringHelper.StartsWithAsciiIgnoreCasePrefixLower(url, _tcp))
            { 
                separator = _tcp.Length;
            }
            else
            { 
                return null;
            } 
 
            // find next slash (after end of scheme)
            separator = url.IndexOf('/', separator); 
            if (-1 == separator)
            {
                return url; // means that the url is just "tcp://foo:90" or something like that
            } 

            // Extract the channel URI which is the prefix 
            String channelURI = url.Substring(0, separator); 

            // Extract the object URI which is the suffix 
            objectURI = url.Substring(separator); // leave the slash

            return channelURI;
        } // ParseURL 

 
    } // class TcpChannelHelper 

 
} // namespace System.Runtime.Remoting.Channels.Tcp

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
//==========================================================================
//  File:       TcpChannelHelper.cs 
// 
//  Summary:    Implements helper methods for tcp client and server channels.
// 
//=========================================================================

using System;
using System.Text; 
using System.Runtime.Remoting.Channels;
 
namespace System.Runtime.Remoting.Channels.Tcp 
{
 
    internal static class TcpChannelHelper
    {
        private const String _tcp = "tcp://";
 
        // Used by tcp channels to implement IChannel::Parse.
        // It returns the channel uri and places object uri into out parameter. 
        internal static String ParseURL(String url, out String objectURI) 
        {
            // Set the out parameters 
            objectURI = null;

            int separator;
 
            // Find the starting point of tcp://
            // NOTE: We are using this version of String.Compare to ensure 
            // that string operations are case-insensitive!! 
            if (StringHelper.StartsWithAsciiIgnoreCasePrefixLower(url, _tcp))
            { 
                separator = _tcp.Length;
            }
            else
            { 
                return null;
            } 
 
            // find next slash (after end of scheme)
            separator = url.IndexOf('/', separator); 
            if (-1 == separator)
            {
                return url; // means that the url is just "tcp://foo:90" or something like that
            } 

            // Extract the channel URI which is the prefix 
            String channelURI = url.Substring(0, separator); 

            // Extract the object URI which is the suffix 
            objectURI = url.Substring(separator); // leave the slash

            return channelURI;
        } // ParseURL 

 
    } // class TcpChannelHelper 

 
} // namespace System.Runtime.Remoting.Channels.Tcp

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
